//js的垃圾回收Garbage Collection

//①引用计数
//obj被引用的次数是3，zs和ls各引用1次，栈内还有obj引用堆内存1次
var obj = {name: 'lijing'}
var zs = {name: 'zhangsan', friend: obj}
var ls = {name: 'lisi', friend: obj}
//当引用计数为0时则可释放

//引用计数存在一个问题，循环引用
obj1 = {name: 'obj1', friend: obj2}
obj2 = {name: 'obj2', friend: obj1}
//这会造成内存泄漏，也就是他们的引用计数不会为0，内存空间该释放而释放不了


//②标记清除
//设置一个根对象，垃圾回收器定期从这个根对象出发，找所有从根开始有引用的对象，对于那些没有引用的对象就认为是不可用对象，进行回收
